import { Callout, Card, Cards, Steps, Tabs } from "nextra/components";
import UniversalTabs from "@/components/UniversalTabs";
import InstallCommand from "@/components/InstallCommand";
import { Snippet } from "@/components/code";
import { snippets } from "@/lib/generated/snippets";

#### Cd into your project directory

```bash copy
cd path-to-your-project
```

#### Install the Hatchet SDK and required dependencies

<InstallCommand withDevDependencies />

#### Create project directories

By convention it is recommended to create your workflows in the `workflows` directory and your workers in the `workers` directory.

```bash copy
mkdir workflows &&
mkdir workers
```

#### Instantiate your Hatchet Client

It is recommended to instantiate a shared Hatchet Client in a separate file as a singleton.

Create a new file called `hatchet-client.py` in your project root.

```bash copy
touch hatchet-client.py
```

Add the following code to the file:

<Snippet src={snippets.python.setup.client.create_a_hatchet_client} />

You can now import the Hatchet Client in any file that needs it.

```python copy
from src.hatchet_client import hatchet
```
